package Day_0225.CommonAnnotation;

/**
 * @author zxc
 * @date 2023/02/25 20:26
 **/
public class Annotation_Principle {
    public static void main(String[] args) {
        /**
         * 注解原理
         * ===》
         * 1.注解，本质是一个继承了Annotation的特殊接口，其具体实现类是 Java运行时生成的动态代理类。
         *
         * 2.通过反射来获取注解时，返回的是 Java运行时生成的动态代理对象。
         * ===》
         * （1）注解的具体实现类是 Java运行时所生成的动态代理类;
         * （2）反射获取注解，所得到的对象是 Java运行时所生成的动态代理对象;
         *
         * 3.通过代理对象调用自定义注解的方法，会最终调用AnnotationInvocationHandler的invoke方法。
         * 该方法会从memberValues这个Map中索引出对应的值。
         * 而memberValues的来源是Java常量池。
         *
         */
    }
}
